﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Windows.Forms;
using Recursos.Model;
using Recursos.View;
using System.Text.RegularExpressions;

namespace Recursos
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            var userSecurity = ((Usuario)Session["UserLogged"]);
            var permisos = new PermisosModel();
            if (userSecurity == null)
                Response.Redirect("~/NoAccess.aspx");
            if (!Page.IsPostBack && userSecurity != null && permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Administrador"))
                PopulateDropDown();

            else if (userSecurity == null || !permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Administrador"))
            {
                Response.Redirect("~/NoAccess.aspx");
            }
        }

        private void PopulateDropDown()
        {
            CargarTipoEspacio();
            CargarSedes();
            CargarCarreras();
            CargarEstadoEspacio();

        }

        private void CargarTipoEspacio()
        {
            var espacio = new EspacioModel();
            DropDownListTipo.DataSource = espacio.CargarTipo();
            DropDownListTipo.DataTextField = "Nombre";
            DropDownListTipo.DataValueField = "id";
            DropDownListTipo.DataBind();
        }

        private void CargarSedes()
        {
            var sedes = new SedeModel();
            DropDownListSede.DataSource = sedes.CargarSedes();
            DropDownListSede.DataTextField = "Nombre";
            DropDownListSede.DataValueField = "id";
            DropDownListSede.DataBind();
        }

        private void CargarCarreras()
        {
            var carreras = new CarrerasModel();
            DropDownListCarrera.DataSource = carreras.CargarCarreras();
            DropDownListCarrera.DataTextField = "Nombre";
            DropDownListCarrera.DataValueField = "id";
            DropDownListCarrera.DataBind();
        }

        private void CargarEstadoEspacio()
        {
        // En DB Disponible 0 Fuera de servicio 1
           DropDownListEstado.Items.Add("Disponible");
           DropDownListEstado.Items.Add("Fuera de Servicio"); 
        }

        public void CrearEspacio(Object sender, EventArgs e)
        {
            if (DropDownListCarrera.SelectedValue == "" || DropDownListSede.SelectedValue == "" || DropDownListTipo.SelectedValue == "")
                return;
            string codigo = TextBoxCodigo.Text.Replace("-", "");
            var espacios = new EspacioModel();
            var espacio = espacios.CargarEspacios().Where(x => x.Codigo.Equals(codigo));
            var reservaciones = new RservacionModel();

            Regex r = new Regex("^[a-zA-Z0-9]*$");
            if (!r.IsMatch(codigo)) {
                WebMsgBox.Show("El código del espacio debe ser únicamente alfanumérico", "Creación de Espacios");
                return;
            }

            if (!espacio.Any())
            {
                var userSecurity = ((Usuario)Session["UserLogged"]);
                int cedula = userSecurity.Cedula;
                var efectuado = espacios.CrearEspacio(int.Parse(DropDownListTipo.SelectedValue), int.Parse(DropDownListSede.SelectedValue),
                                    DropDownListEstado.SelectedItem.Text, TextBoxDescripcion.Text,
                                    int.Parse(DropDownListCarrera.SelectedValue), codigo,
                                    int.Parse(TextBoxCapacidad.Text), cedula);
                CleanTextBox();
                if (efectuado == 0)
                    WebMsgBox.Show("No tiene permisos para crear este espacio", "Creación de Espacios");
                else
                    WebMsgBox.Show("Espacio " + codigo + " creado correctamente", "Creación de Espacios");
            }
            else
                WebMsgBox.Show("Error: espacio " + codigo + " duplicado", "Creación de Espacios");
        }

        private void CleanTextBox()
        {
            TextBoxCodigo.Text = TextBoxCapacidad.Text = TextBoxDescripcion.Text= "";
        }
    }
}